accessor と const_accessor

メンバークラス concurrent_hash_map::accessor および concurrent_hash_map::const_accessor は、アクセサーと呼ばれます。アクセサーは、複数のスレッドが共有の concurrent_hash_map のキーと値のペアへの同時アクセスを許可します。アクセサーが項目を指していない場合、アクセサーは空 (empty) であると呼ばれます。

accessor メンバークラス

メンバークラス concurrent_hash_map::accessor は、concurrent_hash_map のキーと値のペアへの読み取り/書き込みアクセスを提供します。


namespace oneapi { 
    namespace tbb { 

        template <typename Key, typename T, typename HashCompare, typename Allocator> 
        class concurrent_hash_map<Key, T, HashCompare, Allocator>::accessor { 
            using value_type = std::pair<const Key, T>; 

            accessor(); 
            ~accessor(); 

            bool empty() const; 
            value_type& operator*() const; 
            value_type* operator->() const; 

            void release(); 
        }; // class accessor 
    } // namespace tbb 
} // namespace oneapi

const_accessor メンバークラス

メンバークラス concurrent_hash_map::const_accessor は、concurrent_hash_map のキーと値のペアの読み取り専用アクセスを提供します。


namespace oneapi { 
    namespace tbb { 

        template <typename Key, typename T, typename HashCompare, typename Allocator> 
        class concurrent_hash_map<Key, T, HashCompare, Allocator>::const_accessor { 
            using value_type = const std::pair<const Key, T>; 

            const_accessor(); 
            ~const_accessor(); 

            bool empty() const; 
            value_type& operator*() const; 
            value_type* operator->() const; 

            void release(); 
        }; // class const_accessor 

    } // namespace tbb 
} // namespace oneapi

メンバー関数

構築と破棄

accessor(); const_accessor();

空のアクセサーを生成します。


~accessor(); ~const_accessor();

アクセサーを破棄します。*this が空でない場合、要素の所有権を解放します。

bool empty() const;

戻り値: accessor が空の場合は true、それ以外は false を返します。

キーと値ペアのアクセス

value_type& operator*() const;

戻り値: アクセサーが指すキーと値のペアへの参照。

アクセサーが空の場合の動作は未定義です。


value_type* operator->() const;

戻り値: アクセサーが指すキーと値のペアへのポインター。

アクセサーが空の場合の動作は未定義です。

解放

void release();

*this が空でない場合、要素の所有権を解放します。*this は空になります。